4. 함수적 종속성(Functional Dependency)
4-1. 결정자(Determinant)와 종속자(Dependent)
- 결정자는 주어진 릴레이션에서 다른 애트리뷰트(또는 애트리뷰트들의 집합)를 고유하게
결정하는 하나 또는 하나 이상의 애트리뷰트를 의미
- 결정자를 아래와 같이 표기하고, 이를 A가 B를 결정한다(또는 B가 A에 의해 결정된다,
또는 A는 B의 결정자이다)라고 말한다.
A → B (A : Determinant, B : Dependent)
4-2. 함수적 종속성
- 데이터들이 어떤 기준값에 의해 종속되는 현상, 이 때, 이 기준값을 결정자(Determinant)
라 하고 종속되는 값을 종속자(Dependent)라고 한다. 예를 들어, 사람이라는 엔터티타입
에 주민등록번호, 이름, 출생지, 호주라는 속성이 존재한다고 할 때, 여기에서 이름, 출생
지, 호주라는 속성은 주민등록번호 속성에 종속된다고 볼 수 있다.
★ 함수적 종속성(Functional Dependency : FD) ★
◈ t1.X = t2.X 이면 t1.Y = t2.Y이다 ◈
여기서 잠시 고등학교 시절에 배운 함수의 정의를 다시 한번 생각
해 보자.
X에서 Y로의 사상 f 는 함수이다. X의 값이 Y의 값 하나와
반드시 대응하고 있기 때문이다. 곧, 하나의 X는 하나의 Y와 반드
시 대응한다는 것이다. b와 d가 3에 같이 대응하고 있지만 이것은
함수의 성립조건과는 아무런 관계가 없다. Y의 값의 중복과 관계없
이 함수의 조건은 X에 관한 조건으로서 반드시, 하나만 대응하면
된다는 것이다.(X : 독립변수, Y : 종속변수)
다음과 같은 <사람>관계스키마와 그에 대한 테이블이 있다고 하자.
R : 사람(주민등록번호, 이름, 출생지, 연락처)
<사람> 테이블 : R의 인스턴스 r
주민등록번호 |
이 름 |
출 생 지 |
연 락 처 |
|
111-1111 |
아 무 개 |
서 울 |
123-1234 |
|
222-2222 |
홍 길 동 |
인 천 |
234-1234 |
|
333-3333 |
아 무 개 |
순 천 |
345-1234 |
|
444-4444 |
갑 을 병 |
순 천 |
456-1234 |
|
이 테이블의 대응관계를 위의 함수처럼 표시하면 다음과 같다.
(주민등록번호 -> 이름) 의 대응관계는 함수이다. 그러나 그 역은 함수가 아니다. 아무개가 반드시 하나의 대응관계가 아니라 111-1111, 222-2222 의 두 개의 주민등록번호와 대응하고 있기 때문이다. 여기서 주민등록번호는 이름을 함수적으로 결정한다. 그러나 이름은 주민등록번호를 함수적으로 결정하지 못한다. 곧, 주민등록번호는 이름의 결정자(Determinant)이고 이름은 주민등록번호의 종속자(Dependent)이며, 따라서 이름은 주민등록번호에 함수적 종속관계를 가진다.
“t1.X = t2.X 이면 t1.Y = t2.Y이다” 라는 문장은 X의 하나의 애트리뷰트값(t1.X = t2.X)은 Y의 하나의 애트리뷰트값(t1.Y = t2.Y)에 대응한다는 뜻이다. 즉, 각 X값에 대해 반드시 한 개의 Y값이 대응된다는 것이며, 이를 정리하면,
주어진 릴레이션 R에서 애트리뷰트 Y가 애트리뷰트 X에 함수적으로 종속하는 필요 충분 조건은 "각 X 값에 대해 반드시 한 개의 Y 값이 대응"된다는 것이다.
▶ “t1.X = t2.X 이면 t1.Y = t2.Y이다”에 대한 보충설명
"if t1.X = t2.X, then t1.Y = t2.Y"는 좀더 줄이면 "if x1 = x2, then y1 = y2"이죠.
우리말로 "x1 = x2이면 y1 = y2이다"인데, 좀 다른 말로 표현하면,
x1과 x2가 같은 경우에 y1 과 y2가 같지 않은 경우는 없다,
x1과 x2가 같은데도 y1과 y2가 같지 않은 경우는 없다, 라는 것이죠.
"x1과 x2가 같다(x1=x2)"는 무슨 말입니까.
x1과 x2가 같으니 동일한 x값이라는 소리죠? 즉, 같은 하나의 x값이라는 소리죠.
마찬가지로, "y1 과 y2가 같다(y1 = y2)"라는 뜻은 같은 하나의 y값이 되구요.
이것은, 하나의 x값에 대하여 y값이 달라지는 경우는 없다는 것이죠.
하나의 x값에 대하여 y값이 달라지는 경우는 어떤 경우입니까.
하나의 x값에 대하여 하나가 아닌 여러 개의 y값이 대응하여 어떤 값이 x값과 대응하고
있는 지 판단하기가 힘들어진 경우겠죠.
따라서 정리하면,
"if t1.X = t2.X, then t1.Y = t2.Y"
라는 뜻은,
"각 X 값에 대해 반드시 한 개의 Y 값이 대응"
이라고 되는 것입니다.
"비가 오면 우산을 쓴다"
라는 말은 부정하면 어떤 말이 되나요.
중, 고 시절 명제를 배우는 수학시간에 한번은 나왔을 듯한 질문인데요.
이 명제의 부정을 말하라면 대부분,
"비가 안오면 우산을 안쓴다"
라고 대답을 합니다.
대부분이 대답한다고 항상 모범답안은 아니지요.
명제의 부정이라 너무 수학적으로 생각하고 고민하여서 대답이 오히려 어렵게 되는데,
이 명제의 올바른 부정은,
"비가 오는데도 우산을 쓰지 않는다"
라는 것입니다. 수학의 문제가 아니라 순전히 일상적인 국어의 문제죠.
"그녀를 보면 기분이 좋다"의 부정은 "그녀를 봤는데도 기분이 좋지 않다"
따라서, "비가 오면 우산을 쓴다"라는 문장을 달리 표현하면,
"비가 오는데도 우산을 쓰지 않는 경우는 없다"
가 되는 것이지요.
ㅎㅎㅎ... 알쏭달쏭 하나요.
잠시 수학이라는 부담을 잊어버리시고 그냥 국어적 문장으로만 생각하시길...
4-3. 완전 함수적 종속성(Full Functional Dependency) &
부분 함수적 종속성(Partial Functional Dependency)
임의의 릴레이션 R에서 속성 또는 속성들의 집합 X에 대해 Y가 함수적으로 종속되면서, X의 부분 집합에 대하여서는 함수적으로 종속하지 않은 경우, Y는 X에 대하여 완전 함수적 종속성을 갖는다고 한다.
<학생>테이블
학 번 |
학 과 명 |
학과전화번호 |
과 목 번 호 |
학 점 |
11002 |
컴퓨터과학 |
112-1122 |
CS312 |
A0 |
11002 |
컴퓨터과학 |
112-1122 |
CS315 |
B0 |
24036 |
정보통신 |
234-4321 |
IC220 |
C0 |
▶ (학번, 과목번호) -> 학과명, (학번, 과목번호) -> 학과전화번호
▶ (학번) -> 학과명, (학번) -> 학과전화번호
학과명과 학과전화번호는 (학번, 과목번호)에 함수적 종속이면서 완전 함수적 종속은 아니다. (학번, 과목번호)의 부분집합인 (학번)에 함수적으로 종속되고 있기 때문이다.
4-4. 이행적 함수적 종속성(Transitive Functional Dependency)
한 릴레이션의 속성 X, Y, Z가 주어졌을 때 함수적 종속성 X → Y와 Y → Z가 성립되면 논리적 결과로 X → Z가 성립한다. 이 때 속성 Z는 X에 이행적 함수적 종속성이라고 한다.
위의 <학생>테이블에서
학번 -> 학과명, 학과명 -> 학과전화번호
이므로
학번 -> 학과전화번호
의 이행적 함수적 종속성관계가 성립한다. 여기서 (학과전화번호) -> (학번) 의 관계는 성립하지 않고 있다.